<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/4/5
 * Time: 22:17
 */

namespace app\index\controller;

use app\common\controller\Base;
use think\facade\Request;
use app\common\model\User as UserModel;
use think\facade\Session;

class User extends Base
{
    // 用户注册页面
    public function register(){
        $this->assign("title","用户注册");
        return $this->fetch();
    }

    // 处理用户提交的注册信息
    public function insert(){
        if ( ! Request::isAjax()){
            $this->error('请求类型错误!','register');
        }
        // 验证数据模型
        $data = Request::post();
//        dump($data);exit;
        $rule = 'app\common\validate\User';
        $res = $this->validate($data, $rule);
        if (true !== $res){
            return ['status'=>0, 'message'=>$res];
        }
        // 获取用户通过表单提交过来的数据，排除password_confirm这个变量
        $data = Request::except(['password_confirm'], 'post');
        // 使用模型来创建数据
        if ( ! $user = UserModel::create($data)){
            return ['status'=>0, 'message'=>'注册失败，请检查！'];
        }
        // 用户注册成功后直接登陆
        $user_info = UserModel::get($user->id);
        Session::set('user_info', $user_info);
        return ['status'=>1, 'message'=>'恭喜，注册成功！'];
    }

    public function login(){
        // 检查是否已登陆
        $this->logined();
        return $this->view->fetch('login', ['title'=>'用户登陆']);
    }

    public function loginCheck(){
        if ( ! Request::isAjax()){
            $this->error('请求类型错误','login');
        }
        $data = Request::post();
        $rule = [
            'email|邮箱'=>'require|email',
            'password|密码'=>'require|alphaNum'
        ];
        $res = $this->validate($data, $rule);
        if (true !== $res){
            return ['status'=>0, 'message'=>$res];
        }
        # 使用闭包查询
        // 闭包用use传参数
        $result = UserModel::get(function ($query) use ($data){
            $query->where('email', $data['email']);
        });
        if (is_null($result)){
            return ['status'=>0, 'message'=>'邮箱或者密码不正确'];
        }
        if ($result['password'] != sha1($data['password'])){
            return ['status'=>0, 'message'=>'邮箱或者密码不正确!!!'];
        }
        # 将用户数据写入session
        Session::set('user_info', $result);
        return ['status'=>1, 'message'=>'恭喜，登陆成功!'];
    }

    public function logout(){
        # 第一种方式
//        Session::delete('user_info');
        # 第二种方式
        Session::clear();
        # 第三种方式,在这里行不通
//        Session::destroy();
        $this->success('退出成功','index/index');
    }
}